Permissions APIã培åºè§£èª¬ããã©ãŠã¶ã®æš©é管çã匷åãããŠãŒã¶ãŒãã©ã€ãã·ãŒãä¿è·ããªãããããè¯ããŠã§ãäœéšãå®çŸããæ¹æ³ãæ¢ããŸãã
Permissions API: ãã©ãŠã¶ã®æš©é管çãšãŠãŒã¶ãŒãã©ã€ãã·ãŒ
Permissions APIã¯ãçŸä»£ã®ãŠã§ãéçºã«ãããŠæ¥µããŠéèŠãªèŠçŽ ã§ããããŠã§ããµã€ããæ©å¯æ§ã®é«ããŠãŒã¶ãŒããŒã¿ãããã€ã¹æ©èœãžã®ã¢ã¯ã»ã¹ãèŠæ±ã»ç®¡çããããã®æšæºåãããæ¹æ³ãæäŸããŸãããã®APIã¯ãæ©èœæ§ãšãŠãŒã¶ãŒãã©ã€ãã·ãŒã®ãã©ã³ã¹ããšãäžã§éèŠãªåœ¹å²ãæããããŠãŒã¶ãŒããŠã§ããµã€ãã«ã¢ã¯ã»ã¹ãèš±å¯ããæ å ±ãæ©èœãèªåã§å¶åŸ¡ã§ããããã«ããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãPermissions APIã«ã€ããŠããã®æ©èœãå®è£ ãã»ãã¥ãªãã£ã«é¢ããèæ ®äºé ããããŠãŠãŒã¶ãŒãã¬ã³ããªãŒã§ãã©ã€ãã·ãŒãå°éãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã®ãã¹ããã©ã¯ãã£ã¹ã詳ãã解説ããŸãã
Permissions APIã®å¿ èŠæ§ãçè§£ãã
Permissions APIã®ãããªæšæºåãããAPIãç»å Žãã以åã¯ããã©ãŠã¶ã®æš©éåŠçã¯äžè²«æ§ããªãããŠãŒã¶ãŒäœéšãæãªãåå ãšãªã£ãŠããŸããããŠã§ããµã€ãã¯ãååãªã³ã³ããã¹ããæ£åœãªçç±ã瀺ãããšãªãããã°ãã°äºåã«æš©éãèŠæ±ããŠããŸããããã®æ £è¡ã«ããããŠãŒã¶ãŒã¯çè§£ã§ããªããŸãŸç¡å·®å¥ã«æš©éãèš±å¯ããŠããŸããæ©å¯æ å ±ãæŒæŽ©ããå¯èœæ§ããããŸãããPermissions APIã¯ããããã®åé¡ã«æ¬¡ã®ããã«å¯ŸåŠããŸãïŒ
- æš©éèŠæ±ã®æšæºåïŒ ãŠã§ããµã€ããç°ãªããã©ãŠã¶éã§äžè²«ããæ¹æ³ã§æš©éãèŠæ±ã§ããããã«ããŸãã
- ãŠãŒã¶ãŒã³ã³ãããŒã«ã®åŒ·åïŒ ãŠãŒã¶ãŒãä»äžããæš©éããã现ããå¶åŸ¡ã§ããããã«ããŸãã
- ãŠãŒã¶ãŒäœéšã®åäžïŒ ãŠã§ããµã€ããç¶æ³ã«å¿ããŠæš©éãèŠæ±ããç¹å®ã®æ©èœãžã®ã¢ã¯ã»ã¹ãå¿ èŠãªçç±ãæç¢ºã«èª¬æã§ããããã«ããŸãã
- ãã©ã€ãã·ãŒã®ä¿é²ïŒ äžå¿ èŠãªæš©éèŠæ±ãæå°éã«æããããŒã¿å©çšã«é¢ããéææ§ã確ä¿ããããšã§ãéçºè ããŠãŒã¶ãŒãã©ã€ãã·ãŒãå°éããããä¿ããŸãã
Permissions APIã®ã³ã¢ã³ã³ã»ãã
Permissions APIã¯ãããã€ãã®äž»èŠãªã³ã³ã»ãããäžå¿ã«æ§æãããŠããŸãïŒ
1. Permission DescriptorïŒæš©éèšè¿°åïŒ
Permission Descriptorã¯ãèŠæ±ãããŠããæš©éãèšè¿°ãããªããžã§ã¯ãã§ããéåžžãæš©éã®ååãšããã®ç¹å®ã®æš©éã«å¿ èŠãªè¿œå ãã©ã¡ãŒã¿ãå«ãŸããŸããäŸãšããŠã¯æ¬¡ã®ããã«ãªããŸãïŒ
{
name: 'geolocation'
}
{
name: 'camera',
video: true
}
2. navigator.permissions.query()
navigator.permissions.query()ã¡ãœããã¯ãPermissions APIã®äž»èŠãªãšã³ããªãŒãã€ã³ãã§ããåŒæ°ãšããŠPermission DescriptorãåãåããPermissionStatusãªããžã§ã¯ãã§è§£æ±ºãããPromiseãè¿ããŸãã
navigator.permissions.query({ name: 'geolocation' })
.then(function(result) {
if (result.state === 'granted') {
// æš©éãèš±å¯ãããŠãã
console.log('äœçœ®æ
å ±ã®æš©éãèš±å¯ãããŸããã');
} else if (result.state === 'prompt') {
// æš©éãèŠæ±ããå¿
èŠããã
console.log('äœçœ®æ
å ±ã®æš©éãèŠæ±ããå¿
èŠããããŸãã');
} else if (result.state === 'denied') {
// æš©éãæåŠãããŠãã
console.log('äœçœ®æ
å ±ã®æš©éãæåŠãããŸããã');
}
result.onchange = function() {
console.log('æš©éã®ç¶æ
ã ' + result.state + ' ã«å€æŽãããŸãã');
};
});
3. PermissionStatusãªããžã§ã¯ã
PermissionStatusãªããžã§ã¯ãã¯ãæš©éã®çŸåšã®ç¶æ
ã«é¢ããæ
å ±ãæäŸããŸããããã«ã¯2ã€ã®äž»èŠãªããããã£ããããŸãïŒ
state: æš©éã®çŸåšã®ç¶æ ã瀺ãæååãåãããå€ã¯æ¬¡ã®éãã§ãïŒgranted: ãŠãŒã¶ãŒãæš©éãèš±å¯ããŸãããprompt: ãŠãŒã¶ãŒã¯ãŸã æš©éã«é¢ããæ±ºå®ãããŠããŸãããæš©éãèŠæ±ãããšããŠãŒã¶ãŒã«ããã³ããã衚瀺ãããŸããdenied: ãŠãŒã¶ãŒãæš©éãæåŠããŸãããonchange: æš©éã®ç¶æ ãå€åãããšãã«åŒã³åºãããã€ãã³ããã³ãã©ãããã«ããããŠã§ããµã€ãã¯query()ã¡ãœãããåžžã«ããŒãªã³ã°ããããšãªããæš©éç¶æ ã®å€åã«å¯Ÿå¿ã§ããŸãã
äžè¬çãªæš©éãšãã®ãŠãŒã¹ã±ãŒã¹
Permissions APIã¯ããããããç¹å®ã®ãã©ãŠã¶æ©èœããŠãŒã¶ãŒããŒã¿ã«é¢é£ä»ãããããå¹ åºãæš©éããµããŒãããŠããŸããæãäžè¬çã«äœ¿çšãããæš©éã«ã¯ã次ã®ãããªãã®ããããŸãïŒ
1. äœçœ®æ å ±ïŒGeolocationïŒ
geolocationæš©éã¯ããŠã§ããµã€ãããŠãŒã¶ãŒã®äœçœ®æ
å ±ã«ã¢ã¯ã»ã¹ããããšãèš±å¯ããŸããããã¯ãå°å³ã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«æ€çŽ¢ãã¿ãŒã²ããåºåãªã©ã®äœçœ®æ
å ±ããŒã¹ã®ãµãŒãã¹ãæäŸããã®ã«åœ¹ç«ã¡ãŸãã
äŸïŒã©ã€ãã·ã§ã¢ã¢ããªã¯ããŠãŒã¶ãŒã®çŸåšå°ãç¹å®ããè¿ãã®ãã©ã€ããŒãèŠã€ããããã«äœçœ®æ å ±ã䜿çšããŸããã¬ã¹ãã©ã³æ€çŽ¢ãµã€ãã¯ããŠãŒã¶ãŒã®è¿ãã®ã¬ã¹ãã©ã³ã衚瀺ããããã«äœ¿çšããŸãã倩æ°äºå ±ã¢ããªã¯ãå°åã®æ°è±¡ç¶æ³ã衚瀺ããããã«äœ¿çšããŸãã
2. ã«ã¡ã©ïŒCameraïŒ
cameraæš©éã¯ããŠã§ããµã€ãããŠãŒã¶ãŒã®ã«ã¡ã©ã«ã¢ã¯ã»ã¹ããããšãèš±å¯ããŸããããã¯ããããªäŒè°ãç»åãã£ããã£ãæ¡åŒµçŸå®ïŒARïŒã¢ããªã±ãŒã·ã§ã³ã«äœ¿çšãããŸãã
äŸïŒZoomãGoogle Meetã®ãããªãããªäŒè°ãã©ãããã©ãŒã ã¯ãã«ã¡ã©ãžã®ã¢ã¯ã»ã¹ãå¿ èŠã§ããåçç·šéãµã€ãã¯ããŠãŒã¶ãŒãããã€ã¹ã®ã«ã¡ã©ããçŽæ¥åçãã¢ããããŒãã§ããããã«ããããã«ã«ã¡ã©ã¢ã¯ã»ã¹ãå¿ èŠãšããŸãããªã³ã©ã€ã³æè²ãã©ãããã©ãŒã ã¯ãã€ã³ã¿ã©ã¯ãã£ããªææ¥ãåŠçã®ãã¬ãŒã³ããŒã·ã§ã³ã®ããã«äœ¿çšããŸãã
3. ãã€ã¯ïŒMicrophoneïŒ
microphoneæš©éã¯ããŠã§ããµã€ãããŠãŒã¶ãŒã®ãã€ã¯ã«ã¢ã¯ã»ã¹ããããšãèš±å¯ããŸããããã¯ããã€ã¹ãã£ãããé³å£°é²é³ãé³å£°èªèã«äœ¿çšãããŸãã
äŸïŒGoogleã¢ã·ã¹ã¿ã³ããSiriã®ãããªé³å£°ã¢ã·ã¹ã¿ã³ãã¯ããã€ã¯ãžã®ã¢ã¯ã»ã¹ãå¿ èŠã§ãããªã³ã©ã€ã³èšèªåŠç¿ã¢ããªã¯ãçºé³ç·Žç¿ã®ããã«ãã€ã¯ã¢ã¯ã»ã¹ã䜿çšããŸãã鳿¥œé²é³ãµã€ãã¯ããŠãŒã¶ãŒã®ãã€ã¯ããé³å£°ããã£ããã£ããããã«äœ¿çšããŸãã
4. éç¥ïŒNotificationsïŒ
notificationsæš©éã¯ããŠã§ããµã€ãããŠãŒã¶ãŒã«ããã·ã¥éç¥ãéä¿¡ããããšãèš±å¯ããŸããããã¯ãæŽæ°æ
å ±ãã¢ã©ãŒãããªãã€ã³ããŒã®æäŸã«äœ¿çšãããŸãã
äŸïŒãã¥ãŒã¹ãµã€ãã¯ãéå ±ããŠãŒã¶ãŒã«ç¥ãããããã«éç¥ã䜿çšããŸããEã³ããŒã¹ãµã€ãã¯ã泚æã®æŽæ°æ å ±ãããã¢ãŒã·ã§ã³ããŠãŒã¶ãŒã«ç¥ãããããã«éç¥ã䜿çšããŸãããœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã¯ãæ°ããã¡ãã»ãŒãžãã¢ã¯ãã£ããã£ããŠãŒã¶ãŒã«ç¥ãããããã«éç¥ã䜿çšããŸãã
5. ããã·ã¥ïŒPushïŒ
éç¥ãšå¯æ¥ã«é¢é£ããpushæš©éã¯ããŠã§ããµã€ãããã©ãŠã¶ã§ã¢ã¯ãã£ãã«éãããŠããªããšãã§ãããµãŒããŒããããã·ã¥ã¡ãã»ãŒãžãåä¿¡ã§ããããã«ããŸããããã«ã¯Service Workerãå¿
èŠã§ãã
äŸïŒãã£ããã¢ããªã±ãŒã·ã§ã³ã¯ããã©ãŠã¶ã®ã¿ããéããããŠããŠããæ°ããã¡ãã»ãŒãžããŠãŒã¶ãŒã«ç¥ãããããã«ããã·ã¥éç¥ã䜿çšã§ããŸããã¡ãŒã«ãããã€ããŒã¯ãæ°çã¡ãŒã«ããŠãŒã¶ãŒã«ç¥ãããããã«ããã·ã¥éç¥ã䜿çšã§ããŸããã¹ããŒãã¢ããªã¯ã詊åã®ã©ã€ãã¹ã³ã¢ããŠãŒã¶ãŒã«æŽæ°ããããã«ããã·ã¥éç¥ã䜿çšããŸãã
6. MIDI
midiæš©éã¯ããŠã§ããµã€ãããŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ã«æ¥ç¶ãããMIDIããã€ã¹ã«ã¢ã¯ã»ã¹ããããšãèš±å¯ããŸããããã¯ã鳿¥œå¶äœãããã©ãŒãã³ã¹ã¢ããªã±ãŒã·ã§ã³ã«äœ¿çšãããŸãã
äŸïŒSoundtrapã®ãããªãªã³ã©ã€ã³é³æ¥œå¶äœãœãããŠã§ã¢ã¯ãMIDIããŒããŒããã³ã³ãããŒã©ãŒããã®å ¥åãåãåãããã«MIDIæš©éã䜿çšããŸãã鳿¥œåŠç¿ã¢ããªã±ãŒã·ã§ã³ã¯ã楜åšã§ã®çåŸã®æŒå¥ã远跡ããããã«MIDIã䜿çšããŸããããŒãã£ã«ã·ã³ã»ãµã€ã¶ãŒæ¥œåšã¯ããªã¢ã«ã¿ã€ã ã®é³é¿æäœã®ããã«MIDIãæŽ»çšããŸãã
7. ã¯ãªããããŒãã®èªã¿æžãïŒClipboard-read and Clipboard-writeïŒ
ãããã®æš©éã¯ããŠãŒã¶ãŒã®ã¯ãªããããŒããžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ãããŠã§ããµã€ããããŒã¿ã®èªã¿æžããè¡ããããã«ããŸãããããã®æš©éã¯ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãšã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã«ããããŠãŒã¶ãŒäœéšãåäžãããŸããããã©ã€ãã·ãŒãžã®åœ±é¿ãããããæ éã«æ±ãå¿ èŠããããŸãã
äŸïŒãªã³ã©ã€ã³ããã¥ã¡ã³ããšãã£ã¿ã¯ã`clipboard-write`ã䜿çšããŠãŠãŒã¶ãŒããã©ãŒããããããããã¹ããç°¡åã«ã¯ãªããããŒãã«ã³ããŒã§ããããã«ãã`clipboard-read`ã䜿çšããŠã¯ãªããããŒãããããã¥ã¡ã³ãã«ã³ã³ãã³ãã貌ãä»ããããããã«ããããšãã§ããŸããã³ãŒããšãã£ã¿ã¯ãã³ãŒãã¹ããããã®ã³ããŒïŒããŒã¹ãã«ãããã®æš©éã䜿çšããå ŽåããããŸãããœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã¯ããªã³ã¯ã®ã³ããŒãšå ±æã容æã«ããããã«ã¯ãªããããŒãã¢ã¯ã»ã¹ã䜿çšããŸãã
Permissions APIã®å®è£ ïŒã¹ããããã€ã¹ãããã¬ã€ã
Permissions APIã广çã«äœ¿çšããã«ã¯ãæ¬¡ã®æé ã«åŸã£ãŠãã ããïŒ
1. APIãµããŒãã®æ€åº
Permissions APIã䜿çšããåã«ããŠãŒã¶ãŒã®ãã©ãŠã¶ã§ãµããŒããããŠãããã©ããã確èªããŸãã
if ('permissions' in navigator) {
// Permissions APIã¯ãµããŒããããŠããŸã
console.log('Permissions APIã¯ãµããŒããããŠããŸãã');
} else {
// Permissions APIã¯ãµããŒããããŠããŸãã
console.log('Permissions APIã¯ãµããŒããããŠããŸããã');
}
2. æš©éã¹ããŒã¿ã¹ã®ã¯ãšãª
navigator.permissions.query()ã䜿çšããŠãæš©éã®çŸåšã®ã¹ããŒã¿ã¹ã確èªããŸãã
navigator.permissions.query({ name: 'geolocation' })
.then(function(result) {
// æš©éã¹ããŒã¿ã¹ãåŠçãã
});
3. æš©éã¹ããŒã¿ã¹ã®åŠç
PermissionStatusãªããžã§ã¯ãã®stateããããã£ã«åºã¥ããŠãé©åãªã¢ã¯ã·ã§ã³ã決å®ããŸãã
navigator.permissions.query({ name: 'geolocation' })
.then(function(result) {
if (result.state === 'granted') {
// æš©éãèš±å¯ãããŠãã
// æ©èœã®äœ¿çšãç¶è¡ãã
navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
} else if (result.state === 'prompt') {
// æš©éãèŠæ±ããå¿
èŠããã
// ãããå¿
èŠãšããæ©èœã䜿çšããŠæš©éãèŠæ±ãã
navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
} else if (result.state === 'denied') {
// æš©éãæåŠãããŠãã
// æ©èœãå©çšã§ããªãçç±ããŠãŒã¶ãŒã«èª¬æããã¡ãã»ãŒãžã衚瀺ãã
console.log('äœçœ®æ
å ±ã®æš©éãæåŠãããŠããŸãããã©ãŠã¶ã®èšå®ã§æå¹ã«ããŠãã ããã');
}
});
4. æš©éã®å€æŽãžã®å¯Ÿå¿
onchangeã€ãã³ããã³ãã©ã䜿çšããŠãæš©éã®ç¶æ
ã®å€åããªãã¹ã³ããŸãã
navigator.permissions.query({ name: 'geolocation' })
.then(function(result) {
result.onchange = function() {
console.log('æš©éã®ç¶æ
ã ' + result.state + ' ã«å€æŽãããŸãã');
// æ°ããæš©éã®ç¶æ
ã«åºã¥ããŠUIãŸãã¯ã¢ããªã±ãŒã·ã§ã³ããžãã¯ãæŽæ°ãã
};
});
æš©é管çã®ãã¹ããã©ã¯ãã£ã¹
广çãªæš©é管çã¯ããŠãŒã¶ãŒãšã®ä¿¡é Œãç¯ããè¯å¥œãªãŠãŒã¶ãŒäœéšãä¿èšŒããããã«äžå¯æ¬ ã§ãã以äžã«ãåŸãã¹ããã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
1. ç¶æ³ã«å¿ããŠæš©éãèŠæ±ãã
ãŠãŒã¶ãŒããã®æš©éãå¿ èŠãšããæ©èœã䜿çšããããšãããšãã«ã®ã¿ãæš©éãèŠæ±ããŠãã ãããããã«ããã³ã³ããã¹ããæäŸããããŠãŒã¶ãŒããªããã®æš©éãå¿ èŠãªã®ããçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
äŸïŒããŒãžãèªã¿èŸŒãŸãããšãã«ã«ã¡ã©ãžã®ã¢ã¯ã»ã¹ãèŠæ±ããã®ã§ã¯ãªãããŠãŒã¶ãŒããããªé話ãéå§ããããã«ãã¿ã³ãã¯ãªãã¯ãããšãã«èŠæ±ããŸãã
2. æç¢ºãªèª¬æãæäŸãã
ãªããã®æš©éãå¿ èŠã§ãã©ã®ããã«äœ¿çšãããã®ãããŠãŒã¶ãŒã«æç¢ºã«èª¬æããŠãã ãããããã¯ä¿¡é Œãç¯ãããŠãŒã¶ãŒãæš©éãèš±å¯ããã®ãä¿ããŸãã
äŸïŒäœçœ®æ å ±ãèŠæ±ããåã«ããè¿ãã®ã¬ã¹ãã©ã³ã衚瀺ããããã«ãããªãã®äœçœ®æ å ±ãå¿ èŠã§ãããã®ãããªã¡ãã»ãŒãžã衚瀺ããŸãã
3. æš©éæåŠã«äžå¯§ã«å¯Ÿå¿ãã
ãŠãŒã¶ãŒãæš©éãæåŠããå Žåã諊ããªãã§ãã ããããªããã®æ©èœãå©çšã§ããªãã®ãã説æãããã©ãŠã¶ã®èšå®ã§æš©éãæå¹ã«ããæ¹æ³ãæ¡å ããŸããæåŠãããæš©éãå¿ èŠãšããªã代æ¿ãœãªã¥ãŒã·ã§ã³ãæäŸããããšãæ€èšããŠãã ããã
äŸïŒãŠãŒã¶ãŒãäœçœ®æ å ±ãæåŠããå Žåã¯ã代ããã«æåã§å Žæãå ¥åããããšãææ¡ããŸãã
4. æš©éèŠæ±ãæå°éã«æãã
ã¢ããªã±ãŒã·ã§ã³ãæ©èœããããã«çµ¶å¯Ÿã«å¿ èŠãªæš©éã®ã¿ãèŠæ±ããŠãã ãããäºåã«æš©éãèŠæ±ããããããã«å¿ èŠã§ãªãæš©éãæ±ãããããããšã¯é¿ããŠãã ãããã¢ããªã±ãŒã·ã§ã³ãèŠæ±ããæš©éã宿çã«èŠçŽãããããããŸã å¿ èŠã§ããããšã確èªããŠãã ããã
5. ãŠãŒã¶ãŒãã©ã€ãã·ãŒãå°éãã
ãŠãŒã¶ãŒããŒã¿ãã©ã®ããã«åéã䜿çšãä¿åããããã«ã€ããŠéææ§ãä¿ã£ãŠãã ããããŠãŒã¶ãŒã«èªåã®ããŒã¿ãå¶åŸ¡ããæš©éãäžããããŒã¿åéããªããã¢ãŠãã§ããããã«ããŸããGDPRãCCPAãªã©ã®é¢é£ãããã©ã€ãã·ãŒèŠå¶ãéµå®ããŠãã ããã
6. èŠèŠçãªåå³ãæäŸãã
æš©éã§ä¿è·ãããæ©èœïŒã«ã¡ã©ããã€ã¯ãªã©ïŒã䜿çšããŠãããšãã¯ããã®æ©èœãã¢ã¯ãã£ãã§ããããšã瀺ãèŠèŠçãªåå³ããŠãŒã¶ãŒã«æäŸããŠãã ãããããã¯å°ããªã¢ã€ã³ã³ãã€ã³ãžã±ãŒã¿ãŒã©ã€ããªã©ã§ããããã«ããéææ§ã確ä¿ããããŠãŒã¶ãŒãèªåã®ããã€ã¹ãã¢ã¯ãã£ãã«ããŒã¿ãèšé²ãŸãã¯éä¿¡ããŠããããšã«æ°ã¥ããªãã®ãé²ããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
Permissions APIèªäœã¯ããŠã§ããµã€ããã¢ã¯ã»ã¹ã§ããããŒã¿ããŠãŒã¶ãŒãå¶åŸ¡ã§ããããã«ããããšã§ãã»ãã¥ãªãã£ã®å±€ãæäŸããŸããããããéçºè ã¯äŸç¶ãšããŠæœåšçãªã»ãã¥ãªãã£ãªã¹ã¯ãèªèãããããã軜æžããããã®æªçœ®ãè¬ããå¿ èŠããããŸãã
1. å®å šãªããŒã¿è»¢é
ãŠã§ããµã€ããšãµãŒããŒéã§è»¢éãããããŒã¿ãæå·åããããã«ãåžžã«HTTPSã䜿çšããŠãã ãããããã«ããããŠãŒã¶ãŒããŒã¿ãçèŽãæ¹ããããä¿è·ãããŸãã
2. ãŠãŒã¶ãŒå ¥åã®æ€èšŒ
ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æãé²ãããã«ããã¹ãŠã®ãŠãŒã¶ãŒå ¥åãæ€èšŒããŠãã ãããããã¯ãäœçœ®æ å ±ãã«ã¡ã©ã¢ã¯ã»ã¹ãªã©ã®æš©éãéããŠååŸããããŒã¿ãæ±ãå Žåã«ç¹ã«éèŠã§ãã
3. ããŒã¿ã®å®å šãªä¿ç®¡
ãŠãŒã¶ãŒããŒã¿ãä¿åããå¿ èŠãããå Žåã¯ãæå·åãšã¢ã¯ã»ã¹å¶åŸ¡ã䜿çšããŠå®å šã«ä¿ç®¡ããŠãã ãããPCI DSSãªã©ã®é¢é£ããããŒã¿ã»ãã¥ãªãã£åºæºãéµå®ããŠãã ããã
4. äŸåé¢ä¿ã®å®æçãªæŽæ°
ã»ãã¥ãªãã£ã®è匱æ§ã«ããããåœãŠãããã«ããŠã§ããµã€ãã®äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã£ãŠãã ãããããã«ã¯ãJavaScriptã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ããµãŒããŒãµã€ããœãããŠã§ã¢ãå«ãŸããŸãã
5. ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒã®å®è£
CSPã䜿çšããŠããã©ãŠã¶ããªãœãŒã¹ãèªã¿èŸŒãããšãã§ãããœãŒã¹ãå¶éããŠãã ãããããã¯ãXSSæ»æããã®ä»ã®çš®é¡ã®æªæã®ããã³ãŒãã€ã³ãžã§ã¯ã·ã§ã³ãé²ãã®ã«åœ¹ç«ã¡ãŸãã
ã¯ãã¹ãã©ãŠã¶äºææ§
Permissions APIã¯ãChromeãFirefoxãSafariãEdgeãªã©ã®çŸä»£ã®ãã©ãŠã¶ã§åºããµããŒããããŠããŸãããããããã©ãŠã¶ã«ãã£ãŠå®è£ ãåäœã«ããã€ãã®éããããå ŽåããããŸããäºææ§ãšäžè²«ãããŠãŒã¶ãŒäœéšã確ä¿ããããã«ãç°ãªããã©ãŠã¶ã§å®è£ ããã¹ãããããšãäžå¯æ¬ ã§ãã
1. æ©èœæ€åº
Permissions APIã䜿çšããåã«ãåžžã«æ©èœæ€åºã䜿çšããŠãµããŒããããŠãããã©ããã確èªããŠãã ããã
if ('permissions' in navigator) {
// Permissions APIã¯ãµããŒããããŠããŸã
// APIã®äœ¿çšãç¶è¡ãã
} else {
// Permissions APIã¯ãµããŒããããŠããŸãã
// 代æ¿ãœãªã¥ãŒã·ã§ã³ãæäŸããããæ©èœãç¡å¹ã«ãã
}
2. Polyfill
Permissions APIããã€ãã£ãã«ãµããŒãããŠããªãå€ããã©ãŠã¶ããµããŒãããå¿ èŠãããå Žåã¯ãpolyfillã®äœ¿çšãæ€èšããŠãã ãããpolyfillã¯ãæ°ããAPIã®æ©èœãå€ããã©ãŠã¶ã§æäŸããã³ãŒãã®äžéšã§ãã
3. ãã©ãŠã¶åºæã®èæ ®äºé
ãã©ãŠã¶åºæã®çãå¶éã«æ³šæããŠãã ããã詳现ã«ã€ããŠã¯ãåãã©ãŠã¶ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
æš©éé§ååãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®äŸ
å€ãã®çŸä»£çãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã¯ããªããã§é åçãªãŠãŒã¶ãŒäœéšãæäŸããããã«Permissions APIã«äŸåããŠããŸãã以äžã«ããã€ãã®äŸãæããŸãïŒ
1. å°å³ã¢ããªã±ãŒã·ã§ã³
GoogleããããOpenStreetMapã®ãããªå°å³ã¢ããªã±ãŒã·ã§ã³ã¯ãäœçœ®æ å ±æš©éã䜿çšããŠãŠãŒã¶ãŒã®çŸåšå°ã衚瀺ããéæ¡å ãæäŸããŸãããŠãŒã¶ãŒããçŸåšå°ããã¿ã³ãã¯ãªãã¯ããããå Žæãæ€çŽ¢ããããããšãã«æš©éãèŠæ±ããŸãã
2. ãããªäŒè°ãã©ãããã©ãŒã
ZoomãGoogle MeetãMicrosoft Teamsã®ãããªãããªäŒè°ãã©ãããã©ãŒã ã¯ãã«ã¡ã©ãšãã€ã¯ã®æš©éã䜿çšããŠãããªãšé³å£°ã«ããã³ãã¥ãã±ãŒã·ã§ã³ãå¯èœã«ããŸãããŠãŒã¶ãŒãäŒè°ãéå§ãŸãã¯åå ãããšãã«æš©éãèŠæ±ããŸãã
3. ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã
FacebookãInstagramãTwitterã®ãããªãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã¯ãã«ã¡ã©æš©éã䜿çšããŠãŠãŒã¶ãŒãåçããããªãã¢ããããŒãã§ããããã«ããŸãããŠãŒã¶ãŒããã¢ããããŒãããã¿ã³ãã¯ãªãã¯ããããã«ã¡ã©é¢é£ã®æ©èœã䜿çšããããšããããããšãã«æš©éãèŠæ±ããŸãããŸããNotifications APIãæŽ»çšããŠãªã¢ã«ã¿ã€ã ã®æŽæ°ããŠãŒã¶ãŒã«éä¿¡ããããšããããŸãã
4. é³å£°ã¢ã·ã¹ã¿ã³ã
Googleã¢ã·ã¹ã¿ã³ããSiriãAlexaã®ãããªé³å£°ã¢ã·ã¹ã¿ã³ãã¯ããã€ã¯æš©éã䜿çšããŠãŠãŒã¶ãŒã®ã³ãã³ããèãåããŸãããŠãŒã¶ãŒãé³å£°ã¢ã·ã¹ã¿ã³ããèµ·åãããšãã«æš©éãèŠæ±ããŸãã
5. æ¡åŒµçŸå®ïŒARïŒã¢ããªã±ãŒã·ã§ã³
æ¡åŒµçŸå®ïŒARïŒã¢ããªã±ãŒã·ã§ã³ã¯ãã«ã¡ã©æš©éã䜿çšããŠããžã¿ã«ã³ã³ãã³ããçŸå®äžçã«éãåãããŸãããŠãŒã¶ãŒãARäœéšãéå§ãããšãã«æš©éãèŠæ±ããŸãã
Permissions APIã®æªæ¥
Permissions APIã¯ããŠã§ãã®å€åããããŒãºã«å¯Ÿå¿ããããã«çµ¶ããé²åããŠããŸããå°æ¥ã®éçºã«ã¯ã次ã®ãããªãã®ãå«ãŸããå¯èœæ§ããããŸãïŒ
- æ°ããæš©éïŒ æ°ããªãã©ãŠã¶æ©èœãããŒããŠã§ã¢æ©èœã«ã¢ã¯ã»ã¹ããããã®æ°ããæš©éã®ãµããŒã远å ã
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®æ¹åïŒ ãŠãŒã¶ãŒã«ããå€ãã®ã³ã³ããã¹ããšéææ§ãæäŸããããã«ããã©ãŠã¶ã®æš©éèŠæ±UIã匷åã
- ãã詳现ãªå¶åŸ¡ïŒ ç¹å®ã®ãŠã§ããµã€ããæéãžã®ã¢ã¯ã»ã¹ãå¶éããæ©èœãªã©ããŠãŒã¶ãŒãä»äžããæš©éããã现ããå¶åŸ¡ã§ããããã«ããã
- ãã©ã€ãã·ãŒåŒ·åæè¡ãšã®çµ±åïŒ å·®åãã©ã€ãã·ãŒãé£ååŠç¿ãªã©ãä»ã®ãã©ã€ãã·ãŒåŒ·åæè¡ãšPermissions APIãçµã¿åããããŠãŒã¶ãŒããŒã¿ãä¿è·ããã
çµè«
Permissions APIã¯ãŠã§ãéçºè ã«ãšã£ãŠäžå¯æ¬ ãªããŒã«ã§ããããŠãŒã¶ãŒãã©ã€ãã·ãŒãå°éããªããããã¯ãã«ã§é åçãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããšãå¯èœã«ããŸããPermissions APIã®ã³ã¢ã³ã³ã»ãããçè§£ããæš©é管çã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãéçºè ã¯ãŠãŒã¶ãŒãšã®ä¿¡é Œãç¯ããããžãã£ããªãŠãŒã¶ãŒäœéšãæäŸã§ããŸãããŠã§ããé²åãç¶ããäžã§ãPermissions APIã¯å®å šã§ãã©ã€ãã·ãŒãå°éãããªã³ã©ã€ã³ç°å¢ã確ä¿ããäžã§ããŸããŸãéèŠãªåœ¹å²ãæããã§ãããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã§æš©éãèŠæ±ã»ç®¡çããéã¯ãåžžã«ãŠãŒã¶ãŒãã©ã€ãã·ãŒãšéææ§ãåªå ããããšãå¿ããªãã§ãã ããã